package com.longma.server.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.longma.server.constant.enums.YuncangStateEnum;
import com.longma.server.entity.Yuncang;
import com.longma.server.pojo.dto.AdvanceQueryConditionDTO;
import com.longma.server.pojo.dto.YuncangAddDTO;
import com.longma.server.pojo.dto.YuncangUpdateDTO;
import com.longma.server.pojo.vo.YuncangStatisticDataVO;

import java.util.List;
import java.util.Map;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author HAIBO
 * @since 2021-04-28
 */
public interface IYuncangService {
    /**
     * 云仓注册
     */
    Yuncang addYuncang(YuncangAddDTO addRequestDTO);


    /**
     * 根据云仓id删除云仓
     */
    boolean deleteYuncangByIds(List<Integer> ids);

    /**
     * 更新云仓
     */
    Yuncang updateYuncang(YuncangUpdateDTO updateRequestDTO);

    /**
     * 更新云仓状态
     */
    boolean updateYuncangState(int id, YuncangStateEnum state);

    /**
     * 根据云仓id获取云仓信息
     */
    Yuncang getYuncang(int id);

    /**
     * 根据云仓id列表获取云仓运行统计数据  总发电量、总用电量、告警数等
     */
    Map<Integer, YuncangStatisticDataVO> getYuncangStatisticData(List<Integer> ids);

    /**
     * 分页查询 获取云仓列表
     */
    IPage<Yuncang> getYuncangByPage(Long pageNum, Long pageSize, Boolean all, List<AdvanceQueryConditionDTO> conditions);

    /*
     * 根据统计量、区域分页查询
     */
    IPage<Yuncang> getYuncangByPage(Long pageNum, Long pageSize, String province,String city,String sortBy,String order);

    /**
     * 判断id列表是否存在
     */
    boolean isExistIds(List<Integer> ids);

    /**
     * 判断id是否存在
     */
    boolean isExistId(Integer id);
}
